//package com.qk.management.config;
//
//import com.fasterxml.jackson.annotation.JsonAutoDetect;
//import com.fasterxml.jackson.annotation.PropertyAccessor;
//import com.fasterxml.jackson.databind.ObjectMapper;
//import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator;
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
//import org.springframework.data.redis.connection.RedisConnectionFactory;
//import org.springframework.data.redis.core.RedisTemplate;
//import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
//    import org.springframework.data.redis.serializer.StringRedisSerializer;
//
//@Configuration
//public class RedisConfig {
//
//    //指定Redis的key的序列化方式为string
//    @Bean
//    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
//        //1.自定义RedisTemplate,指定Key为String类型，Value为Object类型（更通用）
//        RedisTemplate<String, Object> template = new RedisTemplate<>();
//        template.setConnectionFactory(redisConnectionFactory);//设置Redis连接工厂
//
//        //指定序列化方式
//        // 2. 配置JSON序列化器（用于Value，支持对象序列化）
//        // 设置ObjectMapper
//        ObjectMapper objectMapper = new ObjectMapper();
//        // 允许序列化所有字段（包括私有字段）
//        objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
//        // 保留类型信息（反序列化时能正确转为原对象类型）
//        objectMapper.activateDefaultTyping(
//                LaissezFaireSubTypeValidator.instance,
//                ObjectMapper.DefaultTyping.NON_FINAL
//        );
//        // 直接通过构造函数传入ObjectMapper和目标类型
//        Jackson2JsonRedisSerializer<Object> jsonSerializer = new Jackson2JsonRedisSerializer<>(objectMapper, Object.class);
//        // 3. 字符串序列化器（用于Key，Redis推荐Key为字符串）
//        StringRedisSerializer stringSerializer = new StringRedisSerializer();
//        // 4. 配置序列化方式
//        template.setKeySerializer(stringSerializer);         // Key用字符串序列化
//        template.setHashKeySerializer(stringSerializer);     // Hash的Key用字符串序列化
//        template.setValueSerializer(jsonSerializer);         // Value用JSON序列化（支持对象）
//        template.setHashValueSerializer(jsonSerializer);     // Hash的Value用JSON序列化
//
//        // 5. 初始化RedisTemplate
//        template.afterPropertiesSet();
//        return template;
//    }
//
//}